{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d1e24278-75f0-4e12-b8b0-d7b18a0a73f9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x2b552e2be10>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "import torch.nn.functional as F\n",
    "import numpy as np\n",
    "torch.manual_seed(1024)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "47740fa3-a82d-4009-99ac-16f539b6a615",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义线性模型和Sigmoid函数\n",
    "class Linear:\n",
    "    # input :(B, in_features)\n",
    "    # output (B, out_features)\n",
    "\n",
    "    def __init__(self,in_features,out_features,bias=False):\n",
    "        self.weight = torch.randn(in_features,out_features,requires_grad = True)\n",
    "        if bias:\n",
    "            self.bias = torch.randn(out_features,requires_grad = True)\n",
    "        else :\n",
    "            self.bias = None\n",
    "\n",
    "    def __call__(self,x):\n",
    "        # x :(B, in_features)\n",
    "        #self.weight (in_features, out_features)\n",
    "        self.out = x @ self.weight \n",
    "        if self.bias is not None:\n",
    "            self.out += self.bias\n",
    "        return self.out\n",
    "\n",
    "    def parameters(self):\n",
    "        # 返回模型参数\n",
    "        if self.bias is not None:\n",
    "            return [self.weight,self.bias]\n",
    "        return [self.weight]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2ee84851-4507-4f63-bf1b-38cc98ab564a",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Sigmoid:\n",
    "\n",
    "    def __call__(self,x):\n",
    "        self.out = torch.sigmoid(x)\n",
    "        return self.out\n",
    "    def parameters(self):\n",
    "        return []"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "cf857c9d-a532-4f0c-b111-5773ce286220",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Sequential:\n",
    "    def __init__(self,layers):\n",
    "        self.layers = layers\n",
    "    def __call__(self,x):\n",
    "         # 依次进行向前传播\n",
    "         for l in self.layers:\n",
    "             x = l(x)\n",
    "         self.out = x\n",
    "         return self.out\n",
    "    def parameters(self):\n",
    "        return [p for layer in self.layers for p in layer.parameters()]\n",
    "    def predict_proba(self,x):\n",
    "        if isinstance(x, np.ndarray):\n",
    "            x = torch.tensor(x).float()\n",
    "        logits = self(x)\n",
    "        prob = F.softmax(logits,dim = -1).detach().numpy()\n",
    "        return prob"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "3631b083-a2b1-498b-affc-8aad3e5c1c87",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 0.5296, -0.1640],\n",
      "        [ 0.6737, -0.1308],\n",
      "        [ 0.3171, -0.0633],\n",
      "        [ 0.2928, -0.1829],\n",
      "        [ 0.5699, -0.1291],\n",
      "        [ 0.3209, -0.1663],\n",
      "        [ 0.2320, -0.1368]], grad_fn=<MmBackward0>)\n",
      "[[0.66678005 0.33321992]\n",
      " [0.69093823 0.30906174]\n",
      " [0.5939793  0.4060207 ]\n",
      " [0.61673176 0.3832682 ]\n",
      " [0.66796875 0.33203125]\n",
      " [0.6194558  0.3805442 ]\n",
      " [0.5911552  0.40884483]]\n"
     ]
    }
   ],
   "source": [
    "# x   (B,2)\n",
    "# mlp [4,4,2]\n",
    "model = Sequential([Linear(2,4), Sigmoid(), \n",
    "                   Linear(4,4),Sigmoid(),\n",
    "                    Linear(4,2)\n",
    "                   ])\n",
    "x = torch.randn(7,2)\n",
    "print(model(x))\n",
    "print(model.predict_proba(x))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aa3ccb50-1daa-4a9f-8279-cc1efb01198b",
   "metadata": {},
   "source": [
    "## 画图函数\n",
    "- 将训练数据可视化\n",
    "- 将模型分离平面进行可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "57568ec3-ad9e-4935-98c7-f71742e3d7fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import make_moons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "26f4b421-7b7d-4b4a-8bf3-4230bfcc8a17",
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_data(data):\n",
    "    fig = plt.figure(figsize =(5,5))\n",
    "    ax = fig.add_subplot(1,1,1)\n",
    "    x,y = data\n",
    "    ax.scatter(x[y>0,0],x[y>0,1],marker = 'o')\n",
    "    ax.scatter(x[y==0,0],x[y==0,1],marker = '^',color = 'k')\n",
    "    return ax\n",
    "\n",
    "def draw_model(ax,model):\n",
    "    '''\n",
    "    将模型的分离超平面进行可视化\n",
    "    '''\n",
    "    x1 = np.linspace(ax.get_xlim()[0],ax.get_xlim()[1],100)\n",
    "    x2 = np.linspace(ax.get_ylim()[0],ax.get_ylim()[1],100)\n",
    "    x1,x2 = np.meshgrid(x1,x2)\n",
    "    y = model.predict_proba(np.c_[x1.ravel(),x2.ravel()])[:,1]\n",
    "    y = y.reshape(x1.shape)\n",
    "    ax.contourf(x1,x2,y,levels = [0,0.5],colors = ['gray'],alpha = 0.4)\n",
    "    return ax\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "860c5c1f-6806-4259-8830-c8c9f5b846b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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hqSkJGzYsAEDBgwAcGHMacuWLViwYIEhf9OT1uvLyspCbW0tduzYgYyMDADAZ599htraWgwdOlTz3zt16hSOHTvmdnMQTHFxcRg0aBA2bNiAO+64w7l9w4YNGD9+vOxzsrKysHbtWrdtn376KQYPHozY2FhDz1cvX65PTnl5echeo0Cy0msXKGZ97YQQePDBB7F69Wps3rwZaWlpqs8x1esX9JSiMHbkyBFRXl4u5s2bJ371q1+J8vJyUV5eLs6ePevcp1evXmLVqlXOn1944QXhcDjEqlWrxFdffSUmTZokkpOTRV1dXSguwauxY8eKq6++WpSWlorS0lLRr18/ceutt7rt43p9Z8+eFY899pjYvn27qKioEMXFxSIrK0tccsklIb2+ZcuWidjYWLFkyRKxb98+kZeXJzp27CgOHz4shBBi5syZIjc317n/999/Lzp06CAeeeQRsW/fPrFkyRIRGxsrPvzww1Bdgld6r++VV14Rq1evFt9++63Yu3evmDlzpgAgVq5cGapLUHT27Fnn5wqAePnll0V5ebk4cuSIEML6r53e67PSa/fAAw8Ih8MhNm/eLCorK52P8+fPO/cx8+vHYBlAU6ZMEQDaPIqLi537ABDvvfee8+fW1lYxZ84ckZSUJOx2u/j1r38tvvrqq+CfvAanTp0S9957r+jUqZPo1KmTuPfee9ukrLte3/nz50V2drZISEgQsbGx4rLLLhNTpkwRR48eDf7Je3jzzTdFSkqKiIuLEwMHDnRLX58yZYq47rrr3PbfvHmzGDBggIiLixOpqali4cKFQT5jffRc34IFC8QVV1wh2rVrJy6++GIxfPhw8fHHH4fgrNVJUyU8H1OmTBFCWP+103t9Vnrt5K7L8/vQzK8f17MkIiJSwakjREREKhgsiYiIVDBYEhERqWCwJCIiUsFgSUREpILBkoiISAWDJRERkQoGSyIiIhUMlkRERCoYLImIiFQwWBIREan4/wGSHFshiG73EQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = make_moons(200,noise=0.05)\n",
    "draw_data(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "1e48f8bd-30e7-4ca0-97b3-1d71a5a5f525",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第0轮测试,模型损失为0.74628955\n",
      "第2000轮测试,模型损失为0.24855573\n",
      "第4000轮测试,模型损失为0.24811998\n",
      "第6000轮测试,模型损失为0.24778764\n",
      "第8000轮测试,模型损失为0.24744612\n",
      "第10000轮测试,模型损失为0.24717307\n",
      "第12000轮测试,模型损失为0.24696243\n",
      "第14000轮测试,模型损失为0.24679407\n",
      "第16000轮测试,模型损失为0.24664871\n",
      "第18000轮测试,模型损失为0.24651252\n",
      "第20000轮测试,模型损失为0.24638301\n",
      "第22000轮测试,模型损失为0.24628031\n",
      "第24000轮测试,模型损失为0.24617143\n",
      "第26000轮测试,模型损失为0.24207385\n",
      "第28000轮测试,模型损失为0.20163362\n",
      "第30000轮测试,模型损失为0.12947217\n",
      "第32000轮测试,模型损失为0.06918485\n",
      "第34000轮测试,模型损失为0.04595831\n",
      "第36000轮测试,模型损失为0.03439925\n",
      "第38000轮测试,模型损失为0.02706360\n",
      "第40000轮测试,模型损失为0.02190918\n",
      "第42000轮测试,模型损失为0.01822032\n",
      "第44000轮测试,模型损失为0.01557197\n",
      "第46000轮测试,模型损失为0.01364626\n",
      "第48000轮测试,模型损失为0.01221844\n",
      "第50000轮测试,模型损失为0.01113130\n",
      "第52000轮测试,模型损失为0.01027423\n",
      "第54000轮测试,模型损失为0.00956986\n",
      "第56000轮测试,模型损失为0.00896526\n",
      "第58000轮测试,模型损失为0.00842478\n",
      "第60000轮测试,模型损失为0.00792560\n",
      "第62000轮测试,模型损失为0.00745452\n",
      "第64000轮测试,模型损失为0.00700469\n",
      "第66000轮测试,模型损失为0.00657378\n",
      "第68000轮测试,模型损失为0.00616180\n",
      "第70000轮测试,模型损失为0.00576988\n",
      "第72000轮测试,模型损失为0.00539948\n",
      "第74000轮测试,模型损失为0.00505144\n",
      "第76000轮测试,模型损失为0.00472641\n",
      "第78000轮测试,模型损失为0.00442443\n",
      "第80000轮测试,模型损失为0.00414505\n",
      "第82000轮测试,模型损失为0.00388740\n",
      "第84000轮测试,模型损失为0.00365040\n",
      "第86000轮测试,模型损失为0.00343281\n",
      "第88000轮测试,模型损失为0.00323332\n",
      "第90000轮测试,模型损失为0.00305055\n",
      "第92000轮测试,模型损失为0.00288303\n",
      "第94000轮测试,模型损失为0.00272961\n",
      "第96000轮测试,模型损失为0.00258890\n",
      "第98000轮测试,模型损失为0.00245986\n"
     ]
    }
   ],
   "source": [
    "batch_size = 32\n",
    "max_steps = 100000\n",
    "x,y = torch.tensor(data[0]).float(),torch.tensor(data[1]).long()\n",
    "lr = 0.1\n",
    "lossi = []\n",
    "model = Sequential([Linear(2,4), Sigmoid(), \n",
    "                   Linear(4,4),Sigmoid(),\n",
    "                    Linear(4,2)\n",
    "                   ])\n",
    "for t in range(max_steps):\n",
    "    ix = (batch_size * t) % (len(y))\n",
    "    xx = x[ix:ix+batch_size]\n",
    "    yy = y[ix:ix+batch_size]\n",
    "    logits = model(xx)\n",
    "    loss = F.cross_entropy(logits,yy)\n",
    "    loss.backward()\n",
    "    with torch.no_grad():\n",
    "        for parm in model.parameters():\n",
    "            parm -= lr * parm.grad\n",
    "            parm.grad = torch.zeros(parm.grad.shape)\n",
    "    if t % 2000 == 0:\n",
    "        lossi.append(loss.item())\n",
    "        print(f'第{t}轮测试,模型损失为{loss.item():.8f}')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "282f6aa7-417b-469c-9c94-59a238eebf24",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x29c2796b490>]"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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Auc7tTjfqcX5Ti3Od+ol85yPiQmsAABg/ErrkREAAGA9wggAALAUYQQAAFiKMAIAACyV1mGktrZWxcXFcrvdKi0t1fbt260uaVzYtm2bvvzlL2vatGkyDEO//vWv++w3TVOPPfaYpk2bpszMTH3uc5/Tnj17rCl2HKipqdG1116r7OxsXXjhhVq6dKnef//9Pn0454mzfv16XXXVVbGFn8rKyvT73/8+tp9znTw1NTUyDENVVVWxNs53Yj322GMyDKPPlp+fH9ufrPOdtmFk8+bNqqqq0urVq9XQ0KBFixZpyZIlamxstLq0Me/UqVOaO3eufvrTnw66/4knntDatWv105/+VO+++67y8/N18803x55BhPhs3bpV9913n9555x3V1dWpu7tbFRUVOnXqVKwP5zxxZsyYoccff1w7d+7Uzp079YUvfEFf+cpXYv9B5lwnx7vvvqsNGzboqquu6tPO+U68OXPmyOv1xrbdu3fH9iXtfJtp6rrrrjMrKyv7tF1xxRXmI488YlFF45Mk85VXXom9D4VCZn5+vvn444/H2s6cOWN6PB7zZz/7mQUVjj8tLS2mJHPr1q2maXLOU+GCCy4wn3nmGc51knR0dJiXXXaZWVdXZ954443mgw8+aJom/2wnw6OPPmrOnTt30H3JPN9pOTISCARUX1+vioqKPu0VFRXasWOHRVWlh0OHDqm5ubnPuXe5XLrxxhs59wni8/kkSZMnT5bEOU+mYDCoF198UadOnVJZWRnnOknuu+8+3Xrrrbrpppv6tHO+k+PAgQOaNm2aiouL9Y1vfEMHDx6UlNzzPSYelJdora2tCgaDysvL69Oel5en5uZmi6pKD9HzO9i5P3z4sBUljSumaaq6ulqf/exnVVJSIolzngy7d+9WWVmZzpw5o4kTJ+qVV17RZz7zmdh/kDnXifPiiy/qv//7v/Xuu+8O2Mc/24m3YMECPf/887r88st19OhR/eAHP1B5ebn27NmT1POdlmEkyjCMPu9N0xzQhuTg3CfH/fffr/fee09vvfXWgH2c88SZNWuWdu3apRMnTuill17SnXfeqa1bt8b2c64To6mpSQ8++KBef/11ud3uIftxvhNnyZIlsddXXnmlysrKdMkll+jnP/+5rr/+eknJOd9peZkmNzdXdrt9wChIS0vLgMSHxIrOyubcJ94DDzygV199VW+88YZmzJgRa+ecJ57T6dSll16q+fPnq6amRnPnztWTTz7JuU6w+vp6tbS0qLS0VA6HQw6HQ1u3btVPfvITORyO2DnlfCfPhAkTdOWVV+rAgQNJ/ec7LcOI0+lUaWmp6urq+rTX1dWpvLzcoqrSQ3FxsfLz8/uc+0AgoK1bt3LuR8k0Td1///16+eWX9ac//UnFxcV99nPOk880Tfn9fs51gi1evFi7d+/Wrl27Ytv8+fP1rW99S7t27dLFF1/M+U4yv9+vffv2qaCgILn/fJ/T9Ncx7MUXXzQzMjLMjRs3mnv37jWrqqrMCRMmmB999JHVpY15HR0dZkNDg9nQ0GBKMteuXWs2NDSYhw8fNk3TNB9//HHT4/GYL7/8srl7927zm9/8pllQUGC2t7dbXPnY9I//+I+mx+Mx33zzTdPr9ca2zs7OWB/OeeKsWrXK3LZtm3no0CHzvffeM7/3ve+ZNpvNfP31103T5FwnW++7aUyT851o3/3ud80333zTPHjwoPnOO++YX/rSl8zs7OzY38Zkne+0DSOmaZpPPfWUWVRUZDqdTnPevHmxWyFxbt544w1T0oDtzjvvNE0zfHvYo48+aubn55sul8u84YYbzN27d1tb9Bg22LmWZD777LOxPpzzxLn77rtj/92YOnWquXjx4lgQMU3OdbL1DyOc78RatmyZWVBQYGZkZJjTpk0zv/rVr5p79uyJ7U/W+TZM0zTPbWwFAABg9NJyzggAADh/EEYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijAAAAEsRRgAAgKUIIwAAwFKEEQAAYKn/H2r/EkPWwb2OAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(lossi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "941efb35-ba4c-4d16-8cf6-7b5089ad0c22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw_model(draw_data(data),model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1f11739d-2ca8-47e4-bc7d-7ae1c0d5da00",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cb6771b3-73f2-4ef4-9731-d55142671b15",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6a68f51b-5c1f-4f4b-8c52-a7bfd7afd509",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c787cdb-55f4-422d-a5e3-246da1697b4e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2af22d94-5d83-40b8-9119-779ae5c07a9d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
